home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / ums / ums-beta / rexx / groupcontents.rexx next >
OS/2 REXX Batch file  |  1994-12-21  |  4KB  |  123 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    GroupContents
  3.    :Contents.   shows contents of one group in UMS' messagebase
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Snail Mail:              EMail:
  6.    :Address.    Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.    :Address.    D-71229 Leonberg         FIDO: 2:2407/106.3
  8.    :History.    v1.0 [kai] 23-Sep-93
  9.    :History.    v1.1 [mh]  26-Sep-93 adaped to skeleton
  10.    :History.    v1.2 [kai] 29-Sep-93 no skeleton, added MakeFlags()
  11.    :History.    v1.3 [hG]  16-Jan-94 improofed argument parsing,
  12.    :History.                         added option NoUpdate
  13.    :History.    v1.4 [hG]  23-Jan-94 uses UMSInit.rexx 1.1 and
  14.    :History.                         hgRexxSupport.library
  15.    :History.    v2.0 [kai] 21-Dec-94 adapted to UMS v11
  16.    :Version.    $VER: GroupContents.rexx 2.0 (21.12.94)
  17.    :Copyright.  Public Domain
  18.    :Language.   ARexx
  19.    :Translator. RexxMast
  20. ------------------------------------------------------------------------ */
  21.  
  22. /*** Startup ***/
  23.  
  24. options results
  25.  
  26. RC = 0
  27.  
  28. signal on BREAK_C
  29. signal on BREAK_D
  30. signal on BREAK_E
  31. signal on BREAK_F
  32. signal on ERROR
  33. signal on HALT
  34. signal on IOERR
  35. signal on SYNTAX
  36.  
  37. /*** Init ***/
  38.  
  39. call addlib("rexxdossupport.library", 0, -30)
  40. call addlib("ums.library", 0, -210, 11)
  41. call UMSInitConsts()
  42.  
  43. /*** Arguments ***/
  44.  
  45. ProgramName = "GroupContents";
  46. ArgsTemplate = "NAME/A,PASSWORD,SERVER/K,GROUP/A"
  47. args.SERVER = ""
  48. args.PASSWORD = ""
  49.  
  50. parse arg arguments
  51. if strip(arguments) = '?' then do
  52.   call writech(STDOUT, ArgsTemplate || ': ')
  53.   arguments = readln(STDIN)
  54. end; else nop
  55. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  56.   say Fault(RC, ProgramName)
  57.   exit 10
  58. end; else nop
  59.  
  60. /*** Login ***/
  61.  
  62. account = UMSLogin(args.name, args.password, args.server)
  63. if account = 0 then do
  64.   say "unable to login."
  65.   exit 10
  66. end
  67.  
  68. /*** Do the magic ***/
  69.  
  70. /* clear local flags 0, 1 and 2 on all messages */
  71. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(), UMSMakeFlags(0, 1, 2),,, "LOCAL", UMSMakeFlags(), UMSMakeFlags())
  72. /* set local flag 1 on all messages of this group */
  73. res = UMSSelectField(account, "LOCAL", UMSMakeFlags(1), UMSMakeFlags(),,, UMSCODE_Group, args.group, TRUE)
  74. /* set local flag 2 on all accessable messages */
  75. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(2), UMSMakeFlags(),,, "USER", UMSMakeFlags(UMSUSTAT_ReadAccess), UMSMakeFlags(UMSUSTAT_ReadAccess))
  76. /* set local flag 0 on all messages with flag 1 AND flag 2 set */
  77. res = UMSSelectFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(),,, "LOCAL", UMSMakeFlags(1, 2), UMSMakeFlags(1, 2))
  78.  
  79. last = 0
  80. do forever
  81.   /* find next message with flag 0 set */
  82.   last = UMSSearchFlags(account, "LOCAL", UMSMakeFlags(0), UMSMakeFlags(0), last)
  83.   if last = 0 then leave
  84.   drop msg. /* _IMPORTANT_ */
  85.   if ~UMSReadMsgField(account, last, msg., UMSCODE_FromName, TRUE) | ~UMSReadMsgField(account, last, msg., UMSCODE_Subject, TRUE) then do
  86.     call CheckErr
  87.   end
  88.   say right(last, 5, " ") left(msg.UMSCODE_FromName, 20) left(msg.UMSCODE_Subject, 40)
  89. end
  90.  
  91. /*** Final cleanup ***/
  92.  
  93. BREAK_C:
  94. BREAK_D:
  95. BREAK_E:
  96. BREAK_F:
  97. ERROR:
  98. HALT:
  99. IOERR:
  100. SYNTAX:
  101.  
  102. IF RC ~= 0 THEN DO
  103.   SAY "Error: " rc errortext(rc) "Line" sigl
  104. END
  105.  
  106. /*** Logout ***/
  107.  
  108. if account ~= 0 then do
  109.   call UMSLogout(account)
  110.   account = 0
  111. end
  112.  
  113. exit 0
  114.  
  115. /*** Support ***/
  116.  
  117. CheckErr: procedure expose account
  118.   err = UMSErrNum(account)
  119.   if err ~= 0 then do
  120.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  121.   end
  122. return
  123.